<?php
namespace app\excel\controller;

use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use think\Controller;
use think\facade\Request;

class Index extends Controller
{
	public function department()
    {
        header("content-type:text/html;charset=utf-8");
        $file = $this->request->file('file');		   			
		// 移动到框架应用根目录/public/uploads/ 目录下 存
		$info = $file->move('./uploads');
        if ($info) {
            //获取上传到后台的文件名
            $fileName = $info->getSaveName();
            //获取文件路径.
            $filePath = ".\uploads". DIRECTORY_SEPARATOR . $fileName;  
            //获取文件后缀
            $suffix = $info->getExtension();
            // 有Xls和Xlsx和Cvs格式三种
            if ($suffix=="xls")
            {
                $reader = IOFactory::createReader('Xls');
            }elseif ($suffix=="xlsx")
            {
                $reader = IOFactory::createReader('Xlsx');
            }elseif ($suffix=="csv")
            {
                $reader = IOFactory::createReader('Csv');
            }else {
                return "<script>alert('文件过大或格式不正确导致上传失败-_-!');window.history.back(-1);</script>";
            }

             //载入excel文件
            $excel = $reader->load($filePath);
            //读取第一张表
            $sheet = $excel->getSheet(0);
            //var_dump($sheet);die();
            //获取总行数
            $row_num = $sheet->getHighestRow();
            //获取总列数
            $col_num = $sheet->getHighestColumn();
            $a=0;
            //将表格里面的数据循环到数组中
            for($i=2;$i<=$row_num;$i++)
            {
            	// 如果A列（题目内容）就将数据存到数据库中
            	if($excel->getActiveSheet()->getCell("A".$i)->getValue()){
                    //*为什么$i=2? (因为Excel表格第一行应该是题目，选项，班级，从第二行开始，才是我们要的数据。)
                    $data[$a]['name'] = $excel->getActiveSheet()->getCell("A".$i)->getValue();//第一列的第$i行的数据
                    $data[$a]['type'] = $excel->getActiveSheet()->getCell("B".$i)->getValue();//第二列的第$i行数据  
                    $data[$a]['campus'] = $excel->getActiveSheet()->getCell("C".$i)->getValue();//第二列的第$i行数据  
                    $data[$a]['status'] = $excel->getActiveSheet()->getCell("D".$i)->getValue();//第二列的第$i行数据  
                    $data[$a]['weight'] = $excel->getActiveSheet()->getCell("E".$i)->getValue();//第二列的第$i行数据  
                     // 这里的数据根据自己表格里面有多少个字段自行决定
                     }
                $a++;
             }
                //往数据库添加数据
				// dump($data);
                $aa = Db('ht_department')->insertAll($data);
				if($aa){
					$this->success("导入成功！","admin/Department/index");
				}else{
					$this->error("导入失败！","admin/Department/index");
				}
            } 
        else {
            return "<script>alert('文件过大或格式不正确导致上传失败-_-!');window.history.back(-1);</script>";
        }           
     }
    
    public function major()
    {
        header("content-type:text/html;charset=utf-8");
        $file = $this->request->file('file');		   			
		// 移动到框架应用根目录/public/uploads/ 目录下 存
		$info = $file->move('./uploads');
        if ($info) {
            //获取上传到后台的文件名
            $fileName = $info->getSaveName();
            //获取文件路径.
            $filePath = ".\uploads". DIRECTORY_SEPARATOR . $fileName;  
            //获取文件后缀
            $suffix = $info->getExtension();
            // 有Xls和Xlsx和Cvs格式三种
            if ($suffix=="xls")
            {
                $reader = IOFactory::createReader('Xls');
            }elseif ($suffix=="xlsx")
            {
                $reader = IOFactory::createReader('Xlsx');
            }elseif ($suffix=="csv")
            {
                $reader = IOFactory::createReader('Csv');
            }else {
                return "<script>alert('文件过大或格式不正确导致上传失败-_-!');window.history.back(-1);</script>";
            }

             //载入excel文件
            $excel = $reader->load($filePath);
            //读取第一张表
            $sheet = $excel->getSheet(0);
            //获取总行数
            $row_num = $sheet->getHighestRow();
            //获取总列数
            $col_num = $sheet->getHighestColumn();
            $a=0;
            //将表格里面的数据循环到数组中
            for($i=2;$i<=$row_num;$i++)
            {
            	// 如果A列（题目内容）就将数据存到数据库中
            	if($excel->getActiveSheet()->getCell("A".$i)->getValue()){
                    //*为什么$i=2? (因为Excel表格第一行应该是题目，选项，班级，从第二行开始，才是我们要的数据。)
                    $data[$a]['major'] = $excel->getActiveSheet()->getCell("A".$i)->getValue();//第一列的第$i行的数据
                    $data[$a]['major_number'] = $excel->getActiveSheet()->getCell("B".$i)->getValue();//第二列的第$i行数据  
                    $data[$a]['department_id'] = $excel->getActiveSheet()->getCell("C".$i)->getValue();//第二列的第$i行数据  
                    $data[$a]['major_code'] = $excel->getActiveSheet()->getCell("D".$i)->getValue();//第二列的第$i行数据  
                    $data[$a]['learning'] = $excel->getActiveSheet()->getCell("E".$i)->getValue();//第二列的第$i行数据  
                    $data[$a]['level'] = $excel->getActiveSheet()->getCell("F".$i)->getValue();//第二列的第$i行数据  
                    $data[$a]['subject'] = $excel->getActiveSheet()->getCell("G".$i)->getValue();//第二列的第$i行数据  
                     // 这里的数据根据自己表格里面有多少个字段自行决定
                     }
                $a++;
             }
                //往数据库添加数据
				// dump($data);
                $aa = Db('ht_major')->insertAll($data);
				if($aa){
					$this->success("导入成功！","admin/Major/index");
				}else{
					$this->error("导入失败！","admin/Major/index");
				}
            } 
        else {
            return "<script>alert('文件过大或格式不正确导致上传失败-_-!');window.history.back(-1);</script>";
        }           
     }
}